/**
 在这个例子中：

 我们创建了一个 WKWebView 并加载了一个包含按钮的HTML页面。
 当按钮被点击时，JavaScript调用 window.webkit.messageHandlers.nativeBridge.postMessage 向原生代码发送消息。
 原生代码实现了 WKScriptMessageHandler 协议，在 didReceiveScriptMessage: 方法中接收并处理来自JavaScript的消息。
 此外，我们在 webView:didFinishNavigation: 中执行了一些JavaScript代码，这些代码会在页面加载完成后自动执行。
 */

#import <UIKit/UIKit.h>
#import <WebKit/WebKit.h>

@interface CXWKWebViewTestVC : UIViewController <WKScriptMessageHandler, WKNavigationDelegate>
@property (nonatomic, strong) WKWebView *webView;
@end

@implementation CXWKWebViewTestVC

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 创建WKWebView配置对象
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    
    // 添加脚本消息处理器
    configuration.userContentController = [[WKUserContentController alloc] init];
    [configuration.userContentController addScriptMessageHandler:self name:@"nativeBridge"];//注册与JS交互方法
    
    // 初始化WKWebView
    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
    self.webView.navigationDelegate = self;
    [self.view addSubview:self.webView];
    
    // 加载本地HTML文件
    NSString *path = [[NSBundle mainBundle] pathForResource:@"chaoxitwebest" ofType:@"html"];
    NSURL *baseURL = [NSURL fileURLWithPath:path];
    NSString *htmlString = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [self.webView loadHTMLString:htmlString baseURL:baseURL];
}

#pragma mark - WKScriptMessageHandler

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"nativeBridge"]) {
        NSLog(@"接收到JS调用OC方法: %@", message.body);
        // 在这里处理从JS发送过来的数据
        //网页不能打开
        [DWBAlertView AlertCXAlertCenterAllWithController:self Title:@"提示" Message:@"收到JS调用OC方法" otherItemArrays:@[@"确定"]  Type:-1 handler:^(NSInteger index) {
            if (index==0) {
                
            }
        }];
    }
}

#pragma mark - WKNavigationDelegate
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {
    // 在网页加载完成后执行一些JavaScript代码。OC调用JS方法
    [webView evaluateJavaScript:@"document.getElementById('jsButton').addEventListener('click', function() { window.webkit.messageHandlers.nativeBridge.postMessage('Hello from JavaScript!'); });"
              completionHandler:^(id _Nullable result, NSError * _Nullable error) {
        if (error) {
            NSLog(@"OC调用JS方法错误: %@", error.localizedDescription);
        } else {
            NSLog(@"OC调用JS方法成功");
        }
    }];
}

@end




